perm filename S5X.F4[M11,LCS]2 blob sn#407409 filedate 1979-01-03 generic text, type T, neo UTF8
00100	C ***** SUBROUTINES TO GO WITH S3X.F4 (RUNIT) *******
00200	C* MICRO, RMOVX, ALL, POINTR, RAND,PARAM  7/78
00300	
00400		FUNCTION RMOVX(W,Y,Z)
00500		IF(W.EQ.0)W=.01
00600		IF(Y.EQ.0)Y=.01
00700		RMOVX=Y*((W/Y)**Z)
00800		END
00900	
01000		FUNCTION ALL(JPT,IPTX)
01100		COMMON /VV/LIMIT,V(1)
01200		DIMENSION JPT(1)
01300		K=IPTX-1
01400		IF(K.GT.0)GO TO 2
01500	1    	K=JPT(-K)
01600		IF(K)GO TO 1
01700	C  FOR 'ALL' WITH RR,RD,DF.  FOLLOWS UP ON POINTERS TO POINTERS!
01800		K=K-1
01900	2	ALL=PARAM(V(K+3),K)
02000		END
02100	
02200	C***** THIS IS NOW A 'FAIL' ROUTINE IN SPRINT.FAI
02300		FUNCTION PARAM(X,K)
02400		COMMON J,L  /P/P(1) /PL/IPL(1) /C/T,NWZZ,IT3,T6,NW,TDUR,A,
02500		1 T2,T4,BY,KODE,NPAR,LP,TBG,AC,NPA,BX,IDF,IPM,NM,PAR,PX2
02600		K=0
02700	C IF K IS NOT ZERO UPON RETURN, THEN WE'VE FOUND INFO IN OTHER PARAM.
02800		PARAM=X
02900		IF(X.GT.-9999.0)RETURN
03000		IF(X.EQ.-10000.0)RETURN
03100		K=-(X+9999.0)*100.+.1	
03200		PARAM=P(K)
03300	C GET DATA FROM PARAM K
03400		IPM=IPL(K)
03500		IF(L.NE.2)RETURN
03600	C L=CALLING PARAM NUM., K=PARAM REFERRED TO.
03700		IF(K.EQ.2)PARAM=PX2
03800	C MUST USE 'UNPROCESSED' FORM OF P2 (I.E. NO 'TEMPO' CHANGES)
03900		END
04000		
04100	C***** MICROTONES ********
04200		SUBROUTINE MICRO
04300		COMMON INUM,IPAR  /P/P(1) /PL/IPL(2),IPL3 
04400	C   CALL SUBROUTINE FROM ANY PARAMETER WHERE THE CALLING PARAMETER
04500	C   AND THE IMMEDITELY PRECEDING PARAMETER ARE UNUSED BY YOUR INSTR.
04600	C   P3 CAN BE NOTES OR NUMBS.
04700	
04800		X=P(3)
04900		IF(IPL3.EQ.1)GO TO 1
05000	CC	X=IFIX(X)
05100	C  FOR RAND NOTES TO LOCK ON NOTE NUMBERS.
05200	CC	X=30.8677*2**(X/12)
05300		X=15.43385*2**(X/12)
05400	C  X=FREQ. IN HZ. BASED ON NT # IN P3.  NUM. ABOVE IS B, IE. LOWEST B -1 OCT.
05500		IPL3=1
05600	C  THIS CAUSES FREQ. NUM TO PRINT INSTEAD OF LITERAL CHARACTERS.
05700	
05800	1	Y=IFIX(P(IPAR-1))
05900		Z=IFIX(P(IPAR))
06000	C FIX NEEDED BECAUSE OF POSSIBLE NON-INTEGERS HERE.
06100		P(3)=X*2**(Y/Z)
06200	C  IPAR (Z) IS THE CALLING PARAMETER.  IPAR-1 (Y) THE PREVIOUS PARAM.
06300	C  X HAS BASE FREQ.
06400	C  THE NUMBER IN P(IPAR)=# OF DIVISIONS OF THE OCTAVE.  
06500	C  THE NUMBER IN P(IPAR-1)=CHROMATIC STEP IN THAT DIV.
06600		END
06700	 
06800		FUNCTION RAND(A,B)
06900		RAND=A+(B-A)*RAN(B)
07000	C RAN IS IN FORTRAN LIB.
07100		END